package com.xq.datatype;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.List;

/**
 * @author xq
 * @version 1.0
 * @date 2021/4/28 9:51
 * @description 测试Redis中数据类型Zset
 */
public class TestRedisZset {
    public static void main(String[] args) {
        // 创建连接
        Jedis jedis = new Jedis("192.168.2.120", 6379);
        // 设置密码，有密码设置，所有服务器都没设置
        //jedis.auth("123456");
        // 单个添加
        jedis.zadd("myzset",100.00,"xq");
        HashMap<String, Double> map = new HashMap<>();
        map.put("xh",120.00);
        map.put("xy",69.00);
        map.put("xz",90.00);
        map.put("xi",130.00);
        map.put("xp",20.00);
        // 多个添加
        jedis.zadd("myzset",map);
        // 根据元素获取分数
        System.out.println("根据元素获取分数,:"+jedis.zscore("myzset", "xq"));
        System.out.println("根据分数降序排列：");
        for (String e : jedis.zrange("myzset", 0, -1)) {
            System.out.println(e);
        }

        System.out.println("根据分数的最小和最大的区域，升序排列：");
        for (String e : jedis.zrangeByScore("myzset", 0, 200)) {
            System.out.println(e);
        }
        // 根据元素名称删除元素
        System.out.println("xi元素被删：" + jedis.zrem("myzset","xi"));;
        // 根据分数的最小和最大的区域降序排列，并分页：
        System.out.println("根据分数的最小和最大的区域降序排列，并分页：");
        for (String e : jedis.zrangeByScore("myzset", 0, 200,0,3)) {
            System.out.println(e);
        }

        // 根据分数的最大和最小的区域升序排列，并分页：
        System.out.println("根据分数的最大和最小的区域升序排列，并分页：");
        for (String e : jedis.zrevrangeByScore("myzset", 200, 0,0,4)) {
            System.out.println(e);
        }
        System.out.println("获取总长度："+jedis.zcard("myzset"));
        // 根据分数的最小和最大范围来获取条数：
        System.out.println("根据分数的最小和最大范围来获取条数："+jedis.zcount("myzset", 80, 100));
        jedis.close();
    }
}
